package hyl.ext.pipe;

import java.lang.reflect.Method;

import hyl.core.info.CMsg;

/**
 * 处理节点
 * 
 * 规定 组名=topic名=模型名+方法名
 * 
 * @author 37798955@qq.com
 *
 */
public class CCNode {
	//private static final Logger log = LoggerFactory.getLogger(CCNode.class);

	int _步骤 = 0;// 对应模型中的位置
	CCFrame _md = null;
	String s来源 = null;
	String[] a去向 = null;

	/**
	 * 0 停止,>1 次数
	 */
	int n处理次数 = 0;

	
	String s方法 = null;
	Method _方法 = null;
	String s组 = null;

	/**
	 * 绑定主题 ,消息队列中, 有类似主题就处理
	 * 
	 * @param 主题
	 * @throws Exception
	 * 
	 */
	public CCNode(CCFrame md, String 来源主题, String 去向主题, String 处理方法) throws Exception {
		_md = md;
		s方法 = 处理方法;

		s组 = md.s模型名称;

		if (去向主题 != null) {
			String[] qxs = 去向主题.split(",");
			for (int i = 0; i < qxs.length; i++) {
				qxs[i] =  qxs[i].trim();
			}
			a去向 = qxs;
		}
		// 每个节点实例化一个主类的对象,防止异常时阻碍其他线程
		
		if (来源主题 == null) {
			_方法 = _md._c主类.getMethod(处理方法);
		} else {
			s来源 = 来源主题;
			_方法 = _md._c主类.getMethod(处理方法, CMsg.class);
		}

	}




}
